const ioredis = require('ioredis')

// 建立连接
const redis = new ioredis({
  port: 6379,
  host: '127.0.0.1',
  // 降低性能, 生产环境设置为false或删除掉
  showFriendlyErrorStack: true
})
// 操作 Redis 数据库
// 1. set
// 2. get
// 3. promise get
// 4. ansyc await get
// 5. pipeline管道
// 6. 事务操作
// 7. 测试报错

/**
 * 功能1. 基本使用set
 */
// redis.set('foo', 'bar', (err, ret) => {
//   if (err) {
//     return console.log('写入失败', err)
//   }

//   console.log('写入成功', ret)
// })

/**
 * 功能2. 基本使用get
 */
// redis.get('foo', (err, ret) => {
//   if (err) {
//     return console.log('获取失败', err)
//   }
//   console.log(ret)
// })

/**
 * 功能3. promise get
 */
// redis
//   .get('foo')
//   .then((ret) => {
//     console.log(ret)
//   })
//   .catch((err) => {
//     console.log('获取失败', err)
//   })

/**
 * 功能4. ansyc await get
 */
async function main() {
  try {
    const ret = await redis.get('foo')
    console.log(ret)
  } catch (err) {
    console.log('操作失败', err)
  }
}
main()

/**
 * 功能5. pipeline管道
 */
// async function main() {
//   try {
//     const pipeline = redis.pipeline()
//     for (let i = 0; i < 100; i++) {
//       pipeline.set(`${i}-foo`, i)
//     }
//     const ret = await pipeline.exec()
//     console.log(ret)
//   } catch (err) {
//     console.log('操作失败', err)
//   }
// }
// main()

/**
 * 功能6. 事务操作
 */
// async function main() {
//   try {
//     const ret = await redis.multi().set('jack', 100).set('rose', 200).exec()
//     console.log(ret)
//   } catch (err) {
//     console.log('操作失败', err)
//   }
// }
// main()

/**
 * 功能7. 测试报错
 */
// async function main() {
//   try {
//     // 此处报错
//     await redis.set('adbs')
//     console.log('OK')
//   } catch (err) {
//     console.log('操作失败', err)
//   }
// }
// main()
